home *** CD-ROM | disk | FTP | other *** search
- /* LISTING 2 Sample Program using prompt() */
-
- #include <stdio.h>
- #include <conio.h>
- #include <ctype.h>
- #include <dos.h>
- #include <string.h>
- #include "./keys.h"
-
- /* Identify Field Indexes */
- #define FNAME 0
- #define LNAME 1
- #define SEX 2
- #define AGE 3
-
- #define MOVE_CUR(row,col) printf("\x1B[%d;%df",row,col);
-
- /* Prototypes */
- extern int prompt (char *, char, int, int, int, int,
- char *, int, int);
-
- struct fields {
- short row; /* Field Row */
- short col; /* Field Column */
- short fyi_row; /* FYI Row */
- short fyi_col; /* FYI Column */
- short min_len; /* Minimum Length */
- short max_len; /* Maximum Length */
- char match; /* Match Character Code */
- char fyi[81]; /* FYI Message */
- };
-
- struct fields field[] = {
- { 10,37,15,35,0,30,'A',"ENTER IN YOUR FIRST NAME." },
- { 11,37,15,35,0,30,'A',"ENTER IN YOUR LAST NAME. " },
- { 12,37,15,35,0, 1,'X',"ENTER IN YOUR SEX. (M/F) " },
- { 13,37,15,35,0, 3,'#',"ENTER IN YOUR AGE. " }
- };
-
- void main()
- {
- char xbuf[81]; /* Buffer */
- char fname[31]; /* First Name */
- char lname[31]; /* Last Name */
- char sex; /* Male/Female */
- int c;
- int age;
- int index;
-
- /* Initialize Variables And Draw Screen Titles */
- fname[0] = lname[0] = sex = '\0';
- MOVE_CUR(10,25);
- printf("FIRST NAME:");
- MOVE_CUR(11,25);
- printf("LAST NAME:");
- MOVE_CUR(12,25);
- printf("SEX M/F ..:");
- MOVE_CUR(13,25);
- printf("AGE ......:");
- age = 0;
- index = FNAME;
-
- while (1) {
- switch (index) {
- case FNAME:
- sprintf(xbuf,"%-s",fname);
- c = prompt(xbuf,
- field[FNAME].match,
- field[FNAME].min_len,
- field[FNAME].max_len,
- field[FNAME].row,
- field[FNAME].col,
- field[FNAME].fyi,
- field[FNAME].fyi_row,
- field[FNAME].fyi_col);
- switch (c) {
- case C_UP :
- case UP_NO_CHG:
- case C_END :
- /* Go To Last Screen Field */
- index = AGE;
- break;
-
- case C_ESC :
- /* Exit Program */
- exit(0);
-
- case C_CR :
- case C_DOWN:
- case C_TAB :
- strcpy(fname,xbuf);
- case CR_NO_CHG:
- case DN_NO_CHG:
- case TB_NO_CHG:
- /* Go To Next Field */
- index = LNAME;
- break;
- }
- MOVE_CUR(10,37);
- printf("%-30.30s",fname);
- break;
-
- case LNAME:
- sprintf(xbuf,"%-s",lname);
- c = prompt(xbuf,
- field[LNAME].match,
- field[LNAME].min_len,
- field[LNAME].max_len,
- field[LNAME].row,
- field[LNAME].col,
- field[LNAME].fyi,
- field[LNAME].fyi_row,
- field[LNAME].fyi_col);
- switch (c) {
- case C_END :
- /* Go To Last Screen Field */
- index = AGE;
- break;
-
- case C_ESC :
- /* Exit Program */
- exit(0);
-
- case C_UP :
- case UP_NO_CHG:
- case C_HOME :
- /* Go To Previous Field */
- index = FNAME;
- break;
-
- case C_CR :
- case C_DOWN:
- case C_TAB :
- strcpy(lname,xbuf);
- case CR_NO_CHG:
- case DN_NO_CHG:
- case TB_NO_CHG:
- /* Go To Next Field */
- index = SEX;
- break;
- }
- MOVE_CUR(11,37);
- printf("%-30.30s",lname);
- break;
-
- case SEX:
- sprintf(xbuf,"%c",sex);
- c = prompt(xbuf,
- field[SEX].match,
- field[SEX].min_len,
- field[SEX].max_len,
- field[SEX].row,
- field[SEX].col,
- field[SEX].fyi,
- field[SEX].fyi_row,
- field[SEX].fyi_col);
- switch (c) {
- case C_UP :
- case UP_NO_CHG:
- /* Go To Previous Field */
- index = LNAME;
- break;
-
- case C_ESC :
- /* Exit Program */
- exit(0);
-
- case C_HOME:
- /* Go To First Screen Field */
- index = FNAME;
- break;
-
- case C_CR :
- case C_DOWN:
- case C_TAB :
- sex = xbuf[0];
- case C_END :
- case CR_NO_CHG:
- case DN_NO_CHG:
- case TB_NO_CHG:
- /* Go To Next Previous Field */
- index = AGE;
- break;
- }
- MOVE_CUR(12,37);
- printf("%c",sex);
- break;
-
- case AGE:
- sprintf(xbuf,"%-d",age);
- c = prompt(xbuf,
- field[AGE].match,
- field[AGE].min_len,
- field[AGE].max_len,
- field[AGE].row,
- field[AGE].col,
- field[AGE].fyi,
- field[AGE].fyi_row,
- field[AGE].fyi_col);
- switch (c) {
- case C_UP :
- case UP_NO_CHG:
- /* Go To Previous Field */
- index = SEX;
- break;
-
- case C_ESC :
- /* Exit Program */
- exit(0);
-
- case C_HOME:
- case C_CR :
- case C_DOWN:
- case C_TAB :
- age = atoi(xbuf);
- case CR_NO_CHG:
- case DN_NO_CHG:
- case TB_NO_CHG:
- /* Go To Next Screen Field */
- index = FNAME;
- break;
- }
- MOVE_CUR(13,37);
- printf("%- 3d",age);
- break;
- }
- }
- }
-
-